﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace Jiuyong
{
	//[Serializable]
	//[DataContract]
	public class ConfigDictionary<TConfig> : ObservableKeyedCollection<string,TConfig>
					where TConfig : FilesConfig,new()
	{
		//public ConfigDictionary() : base(EqualityComparer<string>.Default,0)
		//{
		//}

		protected override string GetKeyForItem(TConfig item)
		{
			return item.ConfigTitle;
		}

		public ICollection<string> Keys
		{
			get
			{
				ICollection<string> ts = new string[]
				{
				};

				if (base.Dictionary == null)
				{
				}
				else
				{
					ts = base.Dictionary.Keys;
				}
				return ts;
			}
		}

		//private TConfig _default;
		public TConfig Default
		{
			get
			{

				if (this.Count > 0)
				{
				}
				else
				{
						this.Add(new TConfig());
				}

				return this[0];
			}

			set
			{
				lock (this)
				{
					if (this.Contains(value))
					{
						this.Remove(value);
					}

					this.Insert(0,value);
				}

				//	OnPropertyChanged("Default");
			}
		}


		//private string _defaultKey= "";
		////[DataMember]
		//public string DefaultKey
		//{
		//    get
		//    {
		//        return _defaultKey;
		//    }

		//    set
		//    {
		//        _defaultKey = value;
		//        //	OnPropertyChanged("DefaultKey");
		//    }
		//}


		//public TConfig GetOrNew(string configTitle,TConfig sourceConfig = null)
		//{
		//    if (this.Contains(configTitle))
		//    {
		//    }
		//    else
		//    {
		//        TConfig t= new TConfig()
		//        {
		//            ConfigTitle = configTitle
		//        };

		//        if (sourceConfig == null)
		//        {
		//        }
		//        else
		//        {
		//            sourceConfig.CopyTo(t);
		//        }

		//        this.Add(t);
		//    }

		//    return this[configTitle];
		//}
	}
}
